package org.example.wc

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark03_WordCount {

  def main(args: Array[String]): Unit = {
    // 1.建立和Spark框架的连接
    System.setProperty("hadoop.home.dir", "E:\\BigData\\Spark\\WindowsDep\\hadoop-3.1.0")
    // Spark的上下文对象
    // 本地环境 local
    var sparkConf = new SparkConf().setMaster("local").setAppName("WordCount");
    var sc = new SparkContext(sparkConf);

    var lines:RDD[String] = sc.textFile("./{datas/*}")

    //将一行数据进行拆分，形成一个一个的单词，分词
    //hello world -> hello world hello world
    // 扁平化
    var words = lines.flatMap(_.split(" "));
    // 将每个单词转为 次数
    var wordToOne = words.map(word=>(word,1))
    // Spark框架提供了更多功能，可以将分组和聚合使用一个方式实现
    // reduceByKey：相同的key数据，尅对value进行reduce整合
    var wordToCount = wordToOne.reduceByKey((x,y)=>x+y);


    var array:Array[(String,Int)] = wordToCount.collect()
    array.foreach(println)
    //3.关闭连接
    sc.stop();

  }

}
